package org.jeecg.modules.flowable.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.flowable.entity.TActFengFormEntity;
import org.jeecg.modules.flowable.service.bo.Matter;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author zhangxiaodong
 * @since 2022-06-13
 */
public interface ExtFlowableMapper extends BaseMapper {

    /**
     * 查询任务权限范围列表
     *
     * @param argTaskIds
     * @return
     */
    public List<Map> queryTaskConf(@Param("TASK_IDS") List<String> argTaskIds);

    /**
     * 跟据角色名称查询角色
     *
     * @param argRoleName
     * @return
     */
    public List<Map<String, Object>> queryRoleList(@Param("ROLE_NAME") String argRoleName);

    /**
     * 跟据用户姓名查询人员
     *
     * @param argUserName
     * @return
     */
    public List<Map<String, Object>> queryUserList(@Param("USER_NAME") String argUserName);

    /**
     * 查询行政区划列表queryTaskConf
     *
     * @return
     */
    public List<Map<String, Object>> queryRegion();

    /**
     * 查询机构列表
     *
     * @return
     */
    public List<Map<String, Object>> queryOrg();

    /**
     * 跟据字典项编码查询字典
     *
     * @param argDictKey
     * @return
     */
    public List<Map<String, Object>> queryDictItem(@Param("DIC_CODE") String argDictKey);

    /**
     * 查询表单列表
     *
     * @param argPage
     * @param argFormName
     * @param argFormKey
     * @param argCategoryId
     * @return
     */
    public Page<TActFengFormEntity> queryLastFengForm(Page<TActFengFormEntity> argPage, @Param("FORM_NAME") String argFormName, @Param("FORM_KEY") String argFormKey, @Param("CATEGORY_ID") String argCategoryId, @Param("FORM_STATUS") Integer argFormStatus);

    /**
     * 跟据表单KEY查询最高的版本
     *
     * @param argFormKey
     * @return
     */
    public List<Map<String, Object>> queryFormLastVersionByKey(@Param("FORM_KEY") String argFormKey);

    /**
     * 跟据事项名称，事项分类查询事项列表
     *
     * @param argPage
     * @param argMatterName
     * @param argMatterType
     * @return
     */
    public Page<Matter> queryMatterList(Page<Matter> argPage, @Param("MATTER_NAME") String argMatterName, @Param("MATTER_TYPE") String argMatterType);

    /**
     * 跟据ID查询事项
     *
     * @param argId
     * @return
     */
    public List<Matter> queryMatterById(@Param("ID") String argId);

    /**
     * 查询待办任务
     *
     * @param argUserId
     * @return
     */
    public List<Map<String, Object>> queryMyTodo(@Param("USER_ID") String argUserId);

    /**
     * 查询待办任务
     *
     * @param argUserId
     * @return
     */
    public Page<Map<String, Object>> queryMyTodo(Page<Map> argPage, @Param("USER_ID") String argUserId);

    /**
     * 查询我发起的流程
     *
     * @param argPage
     * @param argUserId
     * @return
     */
    public Page<Map<String, Object>> queryMyFlow(Page<Map> argPage, @Param("USER_ID") String argUserId);

    /**
     * 查询我处理的流程
     *
     * @param argPage
     * @param argUserId
     * @return
     */
    public Page<Map<String, Object>> queryMyProc(Page<Map> argPage, @Param("USER_ID") String argUserId);

    /**
     * 查询我的草稿
     *
     * @param argPage
     * @param argUserId
     * @return
     */
    public Page<Map<String, Object>> queryMyDraft(Page<Map> argPage, @Param("USER_ID") String argUserId);


}
